package com.itheima.health.controller;

import com.itheima.health.common.PageBean;
import com.itheima.health.common.PageDto;
import com.itheima.health.common.Result;
import com.itheima.health.config.BeanContext;
import com.itheima.health.model.dtos.AddCheckItemDto;
import com.itheima.health.model.dtos.UpdateCheckItemDto;
import com.itheima.health.model.entity.CheckItem;
import com.itheima.health.model.vos.CheckItemVo;
import com.itheima.health.service.CheckItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
public class CheckItemController {
    @Autowired
    private BeanContext beanContext;

    @Autowired
    private CheckItemService checkItemService;

    /**
     * 分页查询
     *
     * @param pageDto 页面参数
     * @return {@code PageBean<CheckItem> }
     */
    @PostMapping("/checkitem/findPage")
    public PageBean<CheckItem> findPage(@RequestBody PageDto pageDto) {
        PageBean<CheckItem> pageBean = checkItemService.findPage(pageDto);
        return pageBean;
    }

    /**
     * 添加检查项
     *
     * @param dto dto
     * @return {@code Result }
     */
    @PostMapping("/checkitem/add")
    public Result addCheckItem(@RequestBody AddCheckItemDto dto) {
        checkItemService.addCheckItem(dto);
        return Result.success();
    }

    /**
     * 按id查找检查项目
     *
     * @param id id
     * @return {@code Result<CheckItemVo> }
     */
    @GetMapping("/checkitem/findById")
    public Result<CheckItemVo> findCheckItemById(@RequestParam("id") Integer id) {
        CheckItemVo checkItemVo = checkItemService.findCheckItemById(id);
        return Result.success(checkItemVo);
    }

    /**
     * 更新检查项目
     *
     * @param dto dto
     * @return {@code Result }
     */
    @PostMapping("/checkitem/edit")
    public Result updateCheckItem(@RequestBody UpdateCheckItemDto dto) {
        checkItemService.updateCheckItem(dto);
        return Result.success();
    }

    /**
     * 按id删除检查项
     *
     * @param id id
     * @return {@code Result }
     */
    @GetMapping("/checkitem/delete")
    public Result deleteCheckItemById(@RequestParam("id") Integer id) {
        checkItemService.deleteCheckItemById(id);
        return Result.success();
    }

    /**
     * 查找所有检查项  供  检查组使用
     *
     * @return {@code Result<List<CheckItemVo>> }
     */
    @GetMapping("/checkitem/findAll")
    public Result<List<CheckItemVo>> findAllCheckItem(){
        List<CheckItemVo> list = checkItemService.findAllCheckItem();
        return Result.success(list);
    }

    /**
     * 按检查组id查找检查项目id
     *
     * @param id id
     * @return {@code Result<List<Integer>> }
     */
    @GetMapping("/checkitem/findCheckItemIdsByCheckGroupId")
    public Result<List<Integer>> findCheckItemIdsByCheckGroupId(@RequestParam("checkgroupId") Integer id){
        List<Integer> list = checkItemService.findCheckItemIdsByCheckGroupId(id);
        return Result.success(list);
    }
}
